fork download
  1. #include <avr/io.h>
  2. #include <inttypes.h>
  3. #include <util/delay.h>
  4.  
  5. #define RST_PIN PD2 // Reset pin -- AD9850 <----> AtMega328
  6. #define DATA_PIN PD3 // Data pin -- AD9850 <----> AtMega328
  7. #define FU_UD_PIN PD4 // Freq_up pin -- AD9850 <----> AtMega328
  8. #define W_CLK_PIN PD5 // Word Clock pin -- AD9850 <----> AtMega328
  9. #define OA1_OUT PC0 // OpAmp 1 Output read
  10. #define OA2_OUT PC1 // OpAmp 2 Output read
  11.  
  12. void pulse_high(uint8_t pin){
  13. PORTD |= _BV(pin);
  14. PORTD &= ~_BV(pin);
  15. }
  16.  
  17. void send_byte(uint8_t byte){
  18. for(uint8_t i = 0; i < 8; i++, byte >>= 1){
  19. if( !(byte & 0x01) )
  20. PORTD &= ~_BV(DATA_PIN);
  21. else
  22. PORTD |= _BV(DATA_PIN);
  23. pulse_high(W_CLK_PIN);
  24. }
  25. }
  26.  
  27. void freq_send(uint64_t frequency){
  28. uint32_t freq = (frequency * 4294967296) / (uint64_t)125E6;
  29. for(uint8_t j = 0; j < 4; j++, freq >>= 8){
  30. send_byte(freq & 0xff);
  31. }
  32. send_byte(0x0000);
  33. pulse_high(FU_UD_PIN);
  34. }
  35.  
  36. void mega328_setup(void){
  37. DDRD = 0xff; // Define Port D as output
  38. DDRC &= ~_BV(OA1_OUT); // Define Port C pin PC0 as input, used to read OpAmp1 output
  39. DDRC &= ~_BV(OA2_OUT); // Define Port C pin PC1 as input, used to read OpAmp2 output
  40. }
  41.  
  42. void ad9850_setup(void){
  43. pulse_high(RST_PIN);
  44. pulse_high(W_CLK_PIN);
  45. pulse_high(FU_UD_PIN);
  46. }
  47.  
  48. int main(void){
  49. mega328_setup();
  50. ad9850_setup();
  51. for( ; ; ){
  52. freq_send(2e6);
  53. _delay_ms(60000);
  54. freq_send(5e6);
  55. _delay_ms(60000);
  56. freq_send(10e6);
  57. _delay_ms(60000);
  58. freq_send(39e6);
  59. _delay_ms(60000);
  60. }
  61. return 0;
  62. }
  63.  
Compilation error #stdin compilation error #stdout 0s 0KB
stdin
Standard input is empty
compilation info
prog.c:1:20: fatal error: avr/io.h: No such file or directory
 #include <avr/io.h>
                    ^
compilation terminated.
stdout
Standard output is empty